﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PHI2
{
    static class Estadisticas
    {
        /// <summary>
        /// Metodo que calcula la media de un arreglo de valores
        /// </summary>
        /// <param name="valores"></param>
        /// <returns></returns>
        static public float Media(float[] valores)
        {
            float resultado = 0;
            foreach (float v in valores)
            {
                resultado += v;
            }
            resultado /= valores.Length;
            return resultado;
        }

        /// <summary>
        /// Método que calcula la varianza de un conjunto de valores
        /// </summary>
        /// <param name="valores"></param>
        /// <param name="media"></param>
        /// <returns></returns>
        static public float DE(float[] valores,float media)
        {
            float resultado = 0;
            foreach (float v in valores)
            {
                resultado += (v - media) * (v - media);
            }
            resultado /= valores.Length;
            return resultado;
        }

        /// <summary>
        /// Metodo que calculo la desv. estandar de un conjunto de valores
        /// </summary>
        /// <param name="valores"></param>
        /// <param name="media"></param>
        /// <returns></returns>
        static public float EE(float[] valores, float media)
        {
            float resultado = 0;
            foreach (float v in valores)
            {
                resultado += (v - media) * (v - media);
            }
            resultado /= valores.Length;
            return Convert.ToSingle(Math.Sqrt(Convert.ToDouble(resultado)));
        }

        /// <summary>
        /// Método que retorna el valor mínimo de un conjunto de valores
        /// </summary>
        /// <param name="valores"></param>
        /// <returns></returns>
        static public float Min(float[] valores)
        {
            return valores.Min();
        }

        /// <summary>
        /// Devuelve el máximo de un conjunto de valores
        /// </summary>
        /// <param name="valores"></param>
        /// <returns></returns>
        static public float Max(float[] valores)
        {
            return valores.Max();
        }
         
    }
}
